// pages/login/login.js
const app = getApp()

Page({
    data: {
        hasUserInfo: false,
        userInfo: {},
        encryptedData: '',
        iv: '',

    },

    onLoad() {
        // 检查是否已有用户信息
        const userInfo = wx.getStorageSync('userInfo')
        console.log(userInfo);
        if (userInfo) {
            this.setData({
                hasUserInfo: true,
                userInfo
            })
            this.checkLoginStatus()
        }
    },

    // 获取用户信息（头像、昵称）
    onGetUserInfo(e) {
        if (!e.detail.userInfo) return

        this.setData({
            hasUserInfo: true,
            userInfo: e.detail.userInfo
        })
        console.log(e.detail.userInfo);
        // // 存储用户信息到本地
        // wx.setStorageSync('userInfo', e.detail.userInfo)
        wx.showToast({
            title: '授权成功',
            icon: 'none'
        })
    },
    //获取头像和昵称
    getUserProfile(e) {
        wx.getUserProfile({
            desc: '用于完善用户资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
            success: (res) => {
                console.log(res);
                this.setData({
                    userInfo: res.userInfo,
                    hasUserInfo: true
                })
            }
        })
    },
    // 获取手机号并登录
    async onGetPhoneNumber(e) {
        // if (!e.detail.encryptedData) {
        //     wx.showToast({
        //         title: '授权失败，请重试',
        //         icon: 'none'
        //     })
        //     return
        // }
        // const {
        //     userInfo
        // } = this.data
        // if (!userInfo) {
        //     wx.showToast({
        //         title: '请先授权头像和昵称',
        //         icon: 'none'
        //     })
        //     return
        // }
        // 每次获取手机号前强制刷新登录态
        const loginRes = await new Promise((resolve, reject) => {
            wx.login({
                success: resolve,
                fail: reject
            });
        });
        const {
            encryptedData,
            iv
        } = e.detail

        const code = loginRes.code

        // 显示加载中loading效果
        wx.showLoading({
            title: "加载中",
            mask: true //开启蒙版遮罩
        });
        wx.cloud.callFunction({
                // 云函数名称
                name: 'login',
                // 传给云函数的参数
                data: {
                    code,
                    encryptedData,
                    iv
                }
            })
            .then(res => {
                console.log(res);
                const phone = res.result.data.phoneNumber
                this.handleLogin(phone)
                // wx.hideLoading();
            })
            .catch(err => {
                console.error('获取手机号失败', err)
                wx.hideLoading();
                wx.showToast({
                    title: '登录失败，请重试',
                    icon: 'none'
                })
            })
    },

    // 处理登录逻辑
    async handleLogin(phone) {
        console.log(phone);
        // 检查用户是否已注册
        const checkRes = await wx.cloud.callFunction({
            name: 'checkUser'
        })
        console.log(checkRes);
        if (checkRes.result.exists) {
            // 已注册，直接登录
            const userInfo = {}
            userInfo.phone = phone
            userInfo._id = checkRes.result.user._id
            userInfo.avatarUrl = checkRes.result.user._avatarUrl
            userInfo.nickName = checkRes.result.user._nickName
            userInfo.openid = checkRes.result.user._openid
            // 存储用户信息到本地
            wx.setStorageSync('userInfo', userInfo)
            wx.setStorageSync('isLoggedIn', true)
            wx.hideLoading();
            // 返回上一页
            setTimeout(() => {
                wx.navigateBack();
            }, 1000);

        } else {
            // 未注册，调用注册云函数
            const registerRes = await wx.cloud.callFunction({
                name: 'registerUser',
                data: {
                    phone,
                    avatarUrl: "cloud://cloud1-1gwj5n7fc52da891.636c-cloud1-1gwj5n7fc52da891-1361339536/avatar/avatar.png",
                    nickName: "微信用户"
                }
            })
            console.log(registerRes);
            if (registerRes.result.success) {

                // 存储用户信息到本地
                wx.setStorageSync('userInfo', registerRes.result.userInfo)
                wx.setStorageSync('isLoggedIn', true)
                wx.hideLoading();
                // 返回上一页
                setTimeout(() => {
                    wx.navigateBack();
                }, 1000);
            } else {
                wx.showToast({
                    title: '注册失败，请重试',
                    icon: 'none'
                })
            }
        }
    },

    // 检查登录状态
    async checkLoginStatus() {
        const isLoggedIn = wx.getStorageSync('isLoggedIn')
        if (isLoggedIn) {
            wx.reLaunch({
                url: '/pages/index/index'
            })
        }
    }
})